package chapter8.Object;

public class Finalize {
    public static void main(String[] args) {
        Car car = new Car("bmw");
        car = null;//这是car就是一个垃圾，因为没有任何引用，垃圾回收器就会回收（销毁）对象
        //在销毁对象前，会调用该对象的Finalize方法。
        //可以重写Finalize方法，在销毁之前可以实现自己的业务(比如，释放资源，数据库连接。。)
        System.gc();//主动调用垃圾回收器
        System.out.println("程序结束");
    }
}

class Car{
    private String name ;

    public Car(String name) {
        this.name = name;
    }
    //重写finalize方法

    @Override
    protected void finalize() throws Throwable {
        System.out.println("销毁汽车"+ name);
        System.out.println("释放了某些资源");
        super.finalize();//垃圾回收器有自己的回收算法，不是变成垃圾就立即回收。
    }
}